//  Plop 入口文件 需要导出一个函数

// 此函数接收一个 plop 对象，用于创建生成器任务
module.exports = async (plop) => {
  // const { titleCase } = require('./util');
  // plop.addHelper('ng', (text) => `{{ ${text} }}`);
  // plop.setPartial('myTitlePartial', '<h1>{{moduleName}}</h1>\n');
  // plop.addHelper('upperName', (text) => titleCase(text));
  // const routeModule = await import('./config/routes.mjs');

  plop.setGenerator('page', {
    description: '创建一个页面',
    // 定义终端的询问方式
    prompts: [
      {
        type: 'input',
        name: 'pageName', // 作为接收用户输入结果的键
        message: '请输入Page名称',
        default: 'NewPage',
        // validate: (val) => {
        //   if (val !== 'Uuuu') {
        //     return '组件名称必须为Uuuu';
        //   }
        //   return true;
        // },
      },
      // {
      //   type: 'confirm',
      //   name: 'excelButton', // 作为接收用户输入结果的键
      //   message: '是否需要导出功能？',
      //   default: false,
      // },
      // {
      //   type: 'input',
      //   name: 'moduleName', // 作为接收用户输入结果的键
      //   message: '请输入模块名称',
      //   default: '新模块',
      // },
    ],
    // 定义生成器在收集完用户的回答后需要进行的任务
    actions: ({ pageName, moduleName }) => {
      const actions = [];
      // const path = pageName
      //   .replaceAll(/([A-Z])/g, (_, p1) => {
      //     // 一个捕获组捕获全部，所以match等于p1
      //     return '-' + p1.toLowerCase();
      //   })
      //   .slice(1);
      // const routeObj = routeModule.default;
      // routeObj.splice(routeObj.length - 2, 0, {
      //   name: moduleName,
      //   icon: 'table',
      //   path: `/${path}`,
      //   component: `./${pageName}`,
      // });
      actions.push({
        type: 'add', // 代表添加文件
        path: `src/pages/${pageName}/index.jsx`, // 这里的name就是上面定义的键
        templateFile: 'src/template/component.hbs',
      });
      // actions.push({
      //   type: 'modify',
      //   path: 'config/routes.js',
      //   transform: async () => {
      //     return `export default ${JSON.stringify(routeObj)}
      //         `;
      //   },
      // });
      // actions.push({
      //   type: 'append',
      //   pattern: /(?=(\/\/ flag))/, //正则匹配 //flag,在前面插入
      //   path: 'config/routes.js',
      //   template: `{
      //         // 测试报表
      //         name: {{moduleName}},
      //         icon: 'table',
      //         path: '/{{pageName}}',
      //         component: './{{pageName}}',
      //       },\n`,
      // });
      return actions;
    },
  });
  // plop.setGenerator('component', {
  //   description: '创建一个组件',
  //   prompts: [],
  //   actions: () => {
  //     const actions = [];
  //     return actions;
  //   },
  // });
};
